1312. Шкаф

 

Размеры шкафа a × b × c. Возможно ли его пронести через дверной проём размерами x × y? Считается, что шкаф проходит в проем, если размеры, которыми его будут вносить сквозь дверь, не больше соответствующих размеров двери.

 

Вход.  Целые числа a, b, c, x, y (1 ≤ a, b, c, x, y ≤ 100).

 

Выход. Выведите строку YES, если шкаф пронести возможно, и NO если нельзя.

 

Пример входа

Пример выхода

4 5 6 10 20

YES

 

 

РЕШЕНИЕ

элементарная задача – условный оператор

 

Анализ алгоритма

Пусть a – длина, b – ширина, c – высота шкафа. Шкаф можно пронести в проем двери одной из трех сторон: передом (прямоугольник a × c должен входить в x × y), боком (прямоугольник b × c должен входить в x × y) или верхом (прямоугольник a × b должен входить в x × y).

Прямоугольник a × b входит в x × y, если выполняется одно из условий:

·      ax и by

·      bx и ay

 

Реализация алгоритма

Читаем входные данные. Установим переменной flag значение 0. Перебираем все три возможных расположения шкафа в проеме двери. Если хотя бы при одном из них шкаф пройдет в дверь, установим flag = 1.

 

scanf("%d %d %d %d %d",&a,&b,&c,&x,&y);

flag = 0;

if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y))) flag = 1;

if (((b <= x) && (c <= y)) || ((c <= x) && (b <= y))) flag = 1;

if (((a <= x) && (c <= y)) || ((c <= x) && (a <= y))) flag = 1;

 

В зависимости от значения flag выводим ответ.

 

if (flag == 1)

  printf("YES\n");

else

  printf("NO\n");

 

Второе решение. Задачу можно решить при помощи одного составного условия.

 

scanf("%d %d %d %d %d",&a,&b,&c,&x,&y);

if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y)) ||

    ((b <= x) && (c <= y)) || ((c <= x) && (b <= y)) ||

    ((a <= x) && (c <= y)) || ((c <= x) && (a <= y)))

  printf("YES\n");

else

  printf("NO\n");

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int a = con.nextInt();

    int b = con.nextInt();

    int c = con.nextInt();

    int x = con.nextInt();

    int y = con.nextInt();

   

    int flag = 0;

    if (((a <= x) && (b <= y)) || ((b <= x) && (a <= y))) flag = 1;

    if (((b <= x) && (c <= y)) || ((c <= x) && (b <= y))) flag = 1;

    if (((a <= x) && (c <= y)) || ((c <= x) && (a <= y))) flag = 1;

    if (flag == 1)

      System.out.println("YES");

    else

      System.out.println("NO");

   

    con.close();

  }

}

 

Python реализация

 

a, b, c, x, y = map(int,input().split())

if (a <= x and b <= y) or (b <= x and a <= y) or (b <= x and c <= y)

                       or (c <= x and b <= y) or (a <= x  and c <= y)

                       or (c <= x and a <= y):

  print("YES")

else:

  print("NO")